/*
    单调队列-上

    前置知识 : 
    讲解013-用数组方式实现队列(常数时间比语言自己提供的好)
    讲解049-滑动窗口

    单调队列最经典的用法是解决如下问题：
    滑动窗口在滑动时，r++代表右侧数字进窗口，l++代表左侧数字出窗口
    这个过程中，想随时得到当前滑动窗口的 最大值 或者 最小值
    窗口滑动的过程中，单调队列所有调整的总代价为O(n)，单次操作的均摊代价为O(1)

    图解一下！

    注意：这是单调队列最经典的用法，可以解决很多题目，下节课将继续介绍其他的用法
    注意：单调队列可以和很多技巧交叉使用！比如：动态规划+单调队列优化，会在【扩展】课程里讲述

    ================================================

    题目1
    滑动窗口最大值（单调队列经典用法模版）
    给你一个整数数组 nums，有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧
    你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。
    返回 滑动窗口中的最大值 。
    测试链接 : https://leetcode.cn/problems/sliding-window-maximum/

    ================================================

    题目2
    绝对差不超过限制的最长连续子数组
    给你一个整数数组 nums ，和一个表示限制的整数 limit
    请你返回最长连续子数组的长度
    该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit
    如果不存在满足条件的子数组，则返回 0
    测试链接 : https://leetcode.cn/problems/longest-continuous-subarray-with-absolute-diff-less-than-or-equal-to-limit/

    ================================================

    题目3
    接取落水的最小花盆
    老板需要你帮忙浇花。给出 N 滴水的坐标，y 表示水滴的高度，x 表示它下落到 x 轴的位置
    每滴水以每秒1个单位长度的速度下落。你需要把花盆放在 x 轴上的某个位置
    使得从被花盆接着的第 1 滴水开始，到被花盆接着的最后 1 滴水结束，之间的时间差至少为 D
    我们认为，只要水滴落到 x 轴上，与花盆的边沿对齐，就认为被接住
    给出 N 滴水的坐标和 D 的大小，请算出最小的花盆的宽度 W
    测试链接 : https://www.luogu.com.cn/problem/P2698

*/